﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DunLibrary.Report;

namespace DunSilverlight.Web.ReportWcf
{
    // 注意: 使用“重构”菜单上的“重命名”命令，可以同时更改代码和配置文件中的接口名“IReportService”。
    [ServiceContract]
    public interface IReportService
    {
        /// <summary>
        /// 催收工作量统计
        /// </summary>
        /// <param name="yearPeriod">期数</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <param name="bankNum">银行的FullNumber</param>
        /// <param name="orgNum">组织机构的FullNumber</param>
        /// <returns></returns>
        [OperationContract]
        string GetPhoneCallStatisticReport(int yearPeriod, int? ImportTime, DateTime start, DateTime end, string bankNum, string orgNum);

        /// <summary>
        /// 回款率统计
        /// </summary>
        /// <param name="yearPeriod">期数</param>
        /// <param name="operId">操作员</param>
        /// <param name="arrealDiffStart">逾期下限</param>
        /// <param name="arrealDiffEnd">逾期上限</param>
        /// <param name="arrealAmountStart">金额下限</param>
        /// <param name="arrealAmountEnd">金额上限</param>
        /// <param name="bankNum">银行的FullNumber</param>
        /// <param name="subBankId">支行ID</param>
        /// <param name="orgNum">组织机构的FullNumber</param>
        /// <returns></returns>
        [OperationContract]
        string GetCaseReturnStatisticReport(int yearPeriod,int ?ImportTime,int? operId,string arrealDiffStart, string arrealDiffEnd,
            double? arrealAmountStart, double? arrealAmountEnd, int ?bankId, string orgNum);

        /// <summary>
        /// 催收情况查看
        /// </summary>
        /// <param name="yearPeriod">期数</param>
        /// <param name="arrealAmountStart">金额下限</param>
        /// <param name="arrealAmountEnd">金额上限</param>
        /// <param name="operId">操作员</param>
        /// <param name="cardNo">卡号</param>
        /// <param name="holderName">持卡人姓名</param>
        /// <param name="idCard">持卡人身份证</param>
        /// <param name="bankNum">银行的FullNumber</param>
        /// <param name="subBankId">支行ID</param>
        /// <param name="orgNum">组织机构的FullNumber</param>
        /// <returns></returns>
        [OperationContract]
        string GetPhoneCallQuery(int yearPeriod, int? ImportTime, double? arrealAmountStart, double? arrealAmountEnd,
            int? operId,string cardNo,string holderName,string idCard,string bankNum, int? subBankId, string orgNum);

        /// <summary>
        /// word文档生成
        /// </summary>
        /// <param name="yearPeriod">期数</param>
        /// <param name="arrealDiffStart">逾期下限</param>
        /// <param name="arrealDiffEnd">逾期上限</param>
        /// <param name="arrealAmountStart">金额下限</param>
        /// <param name="arrealAmountEnd">金额上限</param>
        /// <param name="operId">操作员</param>
        /// <param name="cardNo">卡号</param>
        /// <param name="holderName">持卡人姓名</param>
        /// <param name="idCard">插卡人身份证</param>
        /// <param name="bankNum">银行的FullNumber</param>
        /// <param name="subBankId">支行ID</param>
        /// <param name="orgNum">组织机构的FullNumber</param>
        /// <returns></returns>
        [OperationContract]
        string WordPage(int yearPeriod, int? ImportTime, string arrealDiffStart, string arrealDiffEnd,
            double? arrealAmountStart, double? arrealAmountEnd, int? operId, string cardNo,
            string holderName, string idCard, int? bankId, string orgNum);

        /// <summary>
        /// excel文档生成
        /// </summary>
        /// <param name="yearPeriod">期数</param>
        /// <param name="arrealDiffStart">逾期下限</param>
        /// <param name="arrealDiffEnd">逾期上限</param>
        /// <param name="arrealAmountStart">金额下限</param>
        /// <param name="arrealAmountEnd">金额上限</param>
        /// <param name="operId">操作员</param>
        /// <param name="cardNo">卡号</param>
        /// <param name="holderName">持卡人姓名</param>
        /// <param name="idCard">插卡人身份证</param>
        /// <param name="bankNum">银行的FullNumber</param>
        /// <param name="subBankId">支行ID</param>
        /// <param name="orgNum">组织机构的FullNumber</param>
        /// <returns></returns>
        [OperationContract]
        string ExcelPage(int yearPeriod, int? ImportTime, string arrealDiffStart, string arrealDiffEnd,
            double? arrealAmountStart, double? arrealAmountEnd, int? operId, string cardNo,
            string holderName, string idCard, int? bankId, string orgNum);

        /// <summary>
        /// 催收情况表
        /// </summary>
        /// <param name="arIdList">欠款记录的IdList，用‘，’隔开</param>
        /// <param name="operIdList">催收员的IdList，用‘，’隔开</param>
        /// <returns></returns>
        [OperationContract]
        string DunState(int arrId);


        /// <summary>
        /// 获取催款次数
        /// </summary>
        /// <param name="arIdList">卡号list，用‘，’隔开</param>
        /// <param name="yearPeriodList">期数list，用‘；’隔开，每个子项用‘，’隔开</param>
        /// <returns></returns>
        [OperationContract]
        string GetCallCount(string cardIdListStr, string yearPeriodListStr);

        /// <summary>
        /// 获取催收记录
        /// </summary>
        /// <param name="caseIdListStr"></param>
        /// <param name="yearPeriodListStr"></param>
        /// <returns></returns>
        [OperationContract]
        string GetDunRecordList(int arrId);
    }
}
